<?php
/**
 * 
 * @todo description of this class
 * 
 * @author Alton Crossley <crossleyframework@nogahidebootstrap.com>
 * @package Crossley Framework
 *  
 * @copyright Copyright (c) 2003-2009, Nogaide BootStrap INC. All rights reserved.
 * @license BSD http://opensource.org/licenses/bsd-license.php
 * @version $Id:$
 * 
 */
interface X_Broker_Event_Interface
{
    /**
     * return base url with appended path removed
     * 
     * Answers "Where is the controller?"
     *
     */
    public function getBaseUrl();
    
    /**
     * return associative array of data being processed
     * Usually $_GET and $_POST data
     *
     */
    public function getData($sKey = null);
    /**
     * return a value unfiltered
     *
     * @param string $sKey
     */
    public function getRawData($sKey = null);
    /**
     * return html encoded data array or value from key
     *
     * @param string $sKey
     */
    public function getHtmlEncoded($sKey = null);
    /**
     * set associative array of data
     *
     * @param array $aData
     * @param bool $bMerge
     */
    public function setData(Array $aData, $bMerge = false);
    
    /**
     * get full path of the current running script
     * including appended path
     * 
     * Answers "Where are we currently at in
     * relation to domain root?"
     *
     */
    public function getFullPath();
    /**
     * get an array of processed path crums
     *
     */
    public function getHistory();
    /**
     * return an instance of the current class
     * /MAY/ be an singelton, but not a requirement
     *
     * @return __CLASS__
     */
    static public function getInstance();
    /**
     * returns the path beyond the controller in an array
     * does not include the controller path
     * 
     * @return array
     */
    public function getPath();
    /**
     * move path position back to the begining
     *
     */
    public function resetPath();
    /**
     * set the path to be processed
     * just a simple list
     * given nothing, get a default from somewhere like the URI
     *
     * @param array $aPath
     */
    public function setPath(Array $aPath = null);
    
    /**
     * move a path event from path to history
     * so as to keep track of ordinal position
     *
     * @param array $aEvent
     * @return string
     */
    public function getStep();
    /**
     * return the current query string
     *
     */
    public function getUrlQuery();
    
    /**
     * returns a unique id of the event
     * this can be simply specific to the data (suggested) or 
     * it could be specific to the client and data
     *
     */
    public function getUid();
    
	/**
     * @param X_User_Interface $_oUser user to set
     */
    public function setUser($_oUser);

	/**
     * @return X_User_Interface
     */
    public function getUser();
    
}